package com.edu.employee.mapper;

import com.edu.employee.pojo.dto.EmpQueryDTO;
import com.edu.employee.pojo.entity.*;
import com.edu.employee.pojo.vo.EmpInfoVO;
import com.edu.employee.pojo.vo.EmpListVO;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository //代表是仓库，属于持久层，语义化的注解
public interface EmpMapper { // ctrl+1
    /**
     * 根据员工账户查询员工
     * @param account 账户
     * @return 员工信息
     */
    Employee getEmpByAccount(String account);

    /**
     * 根据员工编号查询员工信息
     * @param empId 员工编号
     * @return 员工信息
     */
    Employee getEmpById(Integer empId);

    /**
     * 修改密码
     * @param employee 修改的密码+条件：员工编号
     * @return 受影响的行数
     */
    int updatePwd(Employee employee);

    /**
     * 查询员工个人信息
     * @param empId 员工编号
     * @return 员工个人信息
     */
    EmpInfoVO getEmpInfoById(Integer empId);
    /**
     * 查询员工状态列表
     * @return 员工状态列表
     */
    List<EmpStatus> getEmpStatusList();

    /**
     * 查询婚姻状况列表
     * @return 婚姻状况列表
     */
    List<Marriage> getMarriageList();

    /**
     * 查询民族列表
     * @return 民族列表
     */
    List<MinZu> getMinZuList();

    /**
     * 查询证件类型列表
     * @return 证件类型列表
     */
    List<Certificates> getTypeList();

    /**
     * 根据证件编号查询证件
     * @param typeId 证件编号
     * @return
     */
    Certificates getTypeById(Integer typeId);

    /**
     * 根据民族编号查询名族
     * @param minZuId
     * @return
     */
    MinZu getMinZuById(Integer minZuId);

    /**
     * 根据婚姻状况编号穿婚姻
     * @param marriageId
     * @return
     */
    Marriage getMarriageById(Integer marriageId);

    /**
     * 修改个人信息
     * @param employee
     * @return
     */
    int updateEmpInfo(Employee employee);

    /**
     * 组合条件查询员工列表
     * @param empQueryDTO 查询的条件
     * @return 员工列表
     */
    List<EmpListVO> getEmpList(EmpQueryDTO empQueryDTO);
}
